home *** CD-ROM | disk | FTP | other *** search
Wrap
Applesoft BASIC Source Code | 1988-04-11 | 8.8 KB | 242 lines | [FC] Applesoft BASIC Program (0x0801)
1 I = 0:AN$ = "":J = 0:I$ = "":K = 0 4 ONERR GOTO 10000 5 HCOLOR= 3:D$ = CHR$(4):KS% = -16384:KC% = -16368:HPG% = 2000:MOVE = 4096:FT = 4113:F1 = 17:F2 = 20 10 GOSUB 155: PRINT D$"OPEN TEXT3": PRINT D$"READ TEXT3": PRINT D$: PRINT D$"BLOADp.chels2,A$4000": GOSUB 120: GOTO 1000 20 FOR Z = 0 TO 200 22 IF PEEK(KS%) <128 THEN NEXT Z 23 IF PEEK(KS%) < >141 AND PEEK(KS%) < >155 AND Z <201 THEN POKE KC%,0: GOTO 22 24 RETURN 30 FOR Z = 0 TO 70: NEXT Z: RETURN 40 FOR I = 0 TO 3: GOSUB 251: GOSUB 30: GOSUB 250: GOSUB 30: NEXT I: RETURN 45 PRINT : PRINT : GOSUB 141:TV = PEEK(37): GOSUB 110: POKE 37,TV: PRINT :YV = PEEK(37) *8 +4: HPLOT 0,YV TO 279,YV:ZC = ZC +1: IF ZC >3 THEN ZC = 0: PRINT CHR$(12): HOME 46 RETURN 50 I = 5:J = 0:K = 0:L = 0:M = 0:I$ = "":ESC = 0: IF FL = 0 THEN FL = 245 51 PRINT AN$;:J = LEN(AN$) 52 M = PEEK(37):L = PEEK(36) 53 PRINT I$;" "; 54 N = 1: IF PEEK(37) = PEEK(35) -1 THEN IF L + LEN(I$) > = PEEK(33) -3 THEN N = 0 55 POKE 36,L: VTAB M +1 56 IF LEN(I$) = 0 THEN I$ = " " 57 I = I -1: IF I <0 THEN K = 1 -K:I = 3 +8 * NOT K: PRINT CHR$( ASC(I$) * NOT K +95 *K *( ASC(I$) < >95) +32 *K * NOT ( ASC(I$) < >95)); 58 POKE 36,L: VTAB M +1 59 P = PEEK( -16384): IF P <128 THEN 57 60 ZZ% = FRE(0): POKE -16368,0:K = 0:I = 0 61 IF P >159 AND P < >255 THEN IF J + LEN(I$) <FL THEN IF N THEN AN$ = AN$ + CHR$(P -128):J = J +1: PRINT CHR$(P);: GOTO 52 62 IF P < >255 THEN 67: REM DELETE KEY 63 IF J THEN PRINT " ";: POKE 36,L: POKE 1403,L: VTAB M +1: PRINT CHR$(136);:J = J -1 64 IF J = 0 THEN AN$ = "" 65 IF J THEN AN$ = LEFT$(AN$,J) 66 GOTO 52 67 IF P < >136 THEN 72: REM * BACK ARROW KEY 68 IF J THEN PRINT " ";: POKE 36,L: POKE 1403,L: VTAB M +1: PRINT CHR$(136);:I$ = RIGHT$(AN$,1) +I$:J = J -1 69 IF J = 0 THEN AN$ = "" 70 IF J THEN AN$ = LEFT$(AN$,J) 71 GOTO 52 72 IF P = 141 THEN AN$ = AN$ +I$: PRINT I$;" ": RETURN : REM * RETURN KEY 73 IF P < >149 THEN 79: REM * FORWARD ARROW KEY 74 IF NOT LEN(I$) THEN 52 75 AN$ = AN$ + LEFT$(I$,1):J = J +1: PRINT LEFT$(I$,1); 76 IF LEN(I$) = 1 THEN I$ = "" 77 IF LEN(I$) THEN I$ = RIGHT$(I$, LEN(I$) -1) 78 GOTO 52 79 IF P = 155 THEN ESCKEY = 1: PRINT : RETURN : REM ESCAPE KEY PRESSED 80 GOTO 52 100 HTAB (W% - LEN(S$) +3)/2: PRINT S$;: RETURN 110 D$ = CHR$(4):TMP$ = S$: IF TC% <LM% THEN RETURN 111 POKE KC%,0 112 FOR CT = 0 TO 1000 113 IF PEEK(KS%) <128 AND CT <1001 THEN NEXT CT 114 IF PEEK(KS%) = 141 THEN POKE KC%,0: VTAB T% +1: PRINT :S$ = TMP$: RETURN 115 IF PEEK(KS%) = 155 THEN POKE KC%,0: PRINT D$"CLOSE": GOTO 9990 116 CT = 1001 118 VTAB 24: HTAB 15: PRINT "Press RETURN";: GOSUB 20: HTAB 15: PRINT " ";: GOSUB 20: VTAB 19: GOTO 114 120 POKE 4013,32: POKE 4017,64: CALL 4000: RETURN 130 POKE 4013,64: POKE 4017,32: CALL 4000: RETURN 140 GOSUB 155 141 ZZ% = FRE(0): PRINT D$"READ TEXT3" 142 INPUT "";TX$: IF LEFT$(TX$,1) = "^" THEN 148 144 IF LEN(TX$) >39 THEN PRINT LEFT$(TX$,40);: GOTO 142 146 PRINT TX$: GOTO 142 148 PRINT D$:TC% = TC% +1: RETURN 150 POKE 32,L%: POKE 33,W%: POKE 34,T%: POKE 35,B%: RETURN 152 L% = 0:W% = 40:T% = 0:B% = 24: GOSUB 150: RETURN 155 L% = 0:W% = 40:T% = 19:B% = 24: GOSUB 150: VTAB 19: PRINT CHR$(12): HOME : RETURN 160 A1% = VAL( LEFT$(V$,3)):B1% = VAL( MID$ (V$,5,3)):C1% = VAL( RIGHT$(V$,3)) 162 S% = 1: IF A1% >B1% THEN S% = -1 165 RETURN 170 GOSUB 160: FOR V = A1% TO B1% STEP S%: HPLOT C1%,V: NEXT V: RETURN 180 GOSUB 160: FOR H = A1% TO B1% STEP S%: HPLOT H,C1%: NEXT H: RETURN 200 POKE 32,L% -1: POKE 33,W% +2: POKE 34,T% -1: POKE 35,B% +1:L1% = L% *7:R1% = (L% +W%) *7:T1% = T% *8:B1% = B% *8:XC% = L1% +(R1% -L1%)/2:YC% = T1% +(B1% -T1%)/2:I1% = (R1% -XC%)/5:I2% = (B1% -YC%)/5 210 FOR I = 1 TO 5:DX% = I *I1%:DY% = I *I2%: HPLOT XC% -DX%,YC% -DY% TO XC% +DX%,YC% -DY% TO XC% +DX%,YC% +DY% TO XC% -DX%,YC% +DY% TO XC% -DX%,YC% -DY%: NEXT I 220 VTAB T%: HTAB L%: PRINT CHR$(12):: FOR I = 2 TO 4 STEP 2: HPLOT L1% -I,T1% -I TO R1% +I,T1% -I TO R1% +I,B1% +I TO L1% -I,B1% +I TO L1% -I,T1% -I: NEXT I: GOSUB 150: VTAB T%: HOME 230 RETURN 250 INVERSE : GOTO 255 251 NORMAL 255 GOSUB 152: VTAB VAL( LEFT$(S$,2)): HTAB VAL( MID$ (S$,3,2)): PRINT RIGHT$(S$, LEN(S$) -4): NORMAL : RETURN 300 POKE FT,F2: CALL MOVE: GOSUB 140: GOSUB 110: RETURN 310 POKE FT,F1: CALL MOVE: GOSUB 140: GOSUB 110: RETURN 990 HOME : POKE 33,33: END 1000 & : REM * Turn on HIRES * 1010 GOSUB 300: GOSUB 310: GOSUB 300: GOSUB 140: GOSUB 110: GOSUB 310: GOSUB 300: GOSUB 310: GOSUB 300 1200 HCOLOR= 3 1205 S$ = "1203MICROPROCESSOR": GOSUB 250 1210 V$ = "101 103 43 ": GOSUB 170:V$ = "43 16 103": GOSUB 180:V$ = "103 135 16 ": GOSUB 170:V$ = "16 31 135": GOSUB 180 1211 S$ = "1709 ROM ": GOSUB 250 1212 V$ = "31 30 121": GOSUB 180:V$ = "121 114 30 ": GOSUB 170:V$ = "30 63 114": GOSUB 180:V$ = "114 101 63 ": GOSUB 170 1214 V$ = "101 113 76 ": GOSUB 170:V$ = "76 129 113": GOSUB 180:V$ = "113 75 129": GOSUB 170:V$ = "129 130 75 ": GOSUB 180 1215 FOR J = 132 TO 142: HPLOT J,60 TO J,77: NEXT J:S$ = "1823DISK DRIVE": GOSUB 250 1216 V$ = "130 118 61 ": GOSUB 180:V$ = "61 102 118": GOSUB 170:V$ = "118 96 102": GOSUB 180:V$ = "102 101 96 ": GOSUB 170 1220 GOSUB 110 1222 GOSUB 251:S$ = "1709 ROM ": GOSUB 251:S$ = "1203MICROPROCESSOR": GOSUB 251 1225 GOSUB 155:S$ = "1123 OS ": GOSUB 40: GOSUB 140: GOSUB 110 1230 GOSUB 140: GOSUB 110 1300 GOSUB 155:S$ = "0407 RAM ": GOSUB 40: GOSUB 140: GOSUB 110 1301 INVERSE : FOR N = 0 TO 3 1302 FOR J = 142 TO 132 STEP -1: HPLOT J,60 TO J,77: NEXT J 1303 HCOLOR= 0: IF N/2 = INT(N/2) THEN HCOLOR= 3 1306 INVERSE : IF N = 3 THEN NORMAL 1308 VTAB 18: HTAB 23: PRINT "DISK DRIVE" 1310 V$ = "130 118 61 ": GOSUB 180:V$ = "61 102 118": GOSUB 170:V$ = "118 96 102": GOSUB 180:V$ = "102 101 96 ": GOSUB 170 1312 VTAB 12: HTAB 3: PRINT "MICROPROCESSOR":V$ = "81 64 66 ": GOSUB 170 1315 IF N/2 < > INT(N/2) THEN 1350 1320 IF N = 2 THEN 1330 1325 S$ = "0605OPERATING": GOTO 1340 1330 S$ = "0707SYSTEM" 1340 GOSUB 250 1350 NEXT N: HCOLOR= 3 1360 GOSUB 110: GOSUB 251:S$ = "0605OPERATING": GOSUB 251 1365 S$ = "1123 OS ": GOSUB 251 1370 S$ = "0407 RAM ": GOSUB 251 1500 GOSUB 155:S$ = "1223 PROGRAM ": GOSUB 40: GOSUB 300 1505 FOR N = 0 TO 5 1506 INVERSE : IF N = 5 THEN NORMAL 1507 VTAB 18: HTAB 23: PRINT "DISK DRIVE": FOR J = 142 TO 132 STEP -1: HPLOT J,60 TO J,77: NEXT J 1508 HCOLOR= 0: IF N/2 = INT(N/2) THEN HCOLOR= 3 1510 V$ = "130 118 61 ": GOSUB 180:V$ = "61 102 118": GOSUB 170:V$ = "118 96 102": GOSUB 180:V$ = "102 101 96 ": GOSUB 170 1512 VTAB 12: HTAB 3: PRINT "MICROPROCESSOR":V$ = "81 64 66 ": GOSUB 170 1515 IF N/2 < > INT(N/2) THEN 1550 1525 S$ = LEFT$("0505 PROGRAM ",7 +3 *N/2) 1540 GOSUB 250 1550 NEXT N: HCOLOR= 3 1560 GOSUB 110: GOSUB 310: GOSUB 300: GOSUB 251:S$ = "1223 PROGRAM ": GOSUB 251 1570 GOSUB 310: GOSUB 300 4000 PRINT D$"BLOAD P.CHELS3,A$4000": GOSUB 120 4020 S$(0) = "1723OPERATING SYSTEM":S$(1) = "1403 OPERATING ":S$(2) = "1503 SYSTEM ":S$(3) = "1623 PROGRAM ":S$(4) = "1203 PROGRAM " 4040 FOR I = 0 TO 4:S$ = S$(I): GOSUB 251: NEXT I 4050 HPLOT 10,100 TO 94,100: HPLOT 10,84 TO 94,84 4080 GOSUB 140: GOSUB 110 4500 GOSUB 310: GOSUB 155: GOSUB 130: POKE FT,F2: CALL MOVE: GOSUB 140 4520 L% = 18:W% = 19:T% = 7:B% = 16: GOSUB 200: HPLOT 125,67 TO 260,67 4540 INVERSE : PRINT " What is your name?":T% = T% +2: GOSUB 150 4550 NORMAL 4560 HOME : GOSUB 50: IF ESCKEY THEN PRINT D$"CLOSE": GOTO 9990 4565 IF LEN(AN$) >1 THEN NAME$ = AN$: GOTO 4660 4580 IF NC% <2 THEN AN$ = "": PRINT : PRINT : PRINT "Please type your": PRINT "name and press": PRINT "RETURN.":NC% = NC% +1: GOTO 4560 4600 PRINT CHR$(12): HOME : PRINT : PRINT : PRINT 4620 PRINT "I'll type a name": PRINT "for you.":NAME$ = " Lance ": GOSUB 20 4640 PRINT CHR$(12);: HOME : FOR I = 1 TO LEN(NAME$): PRINT MID$ (NAME$,I,1);:Z = PEEK( -16336) + PEEK( -16336): FOR Z = 1 TO 50: NEXT Z,I 4660 V$ = "121 110 75 ": GOSUB 180:V$ = "75 20 110": GOSUB 170:V$ = "110 95 20 ": GOSUB 180 4680 HPLOT 99,17 TO 96,20: HPLOT 99,23 TO 96,20 4700 IF LEN(NAME$) >76 THEN NAME$ = LEFT$(NAME$,76) 4720 L% = 2:W% = 11:T% = 2:B% = 10: GOSUB 150: HOME : PRINT NAME$; 4740 NORMAL 4750 ZZ% = FRE(0) 4760 GOSUB 140: GOSUB 110 4780 GOSUB 120:L% = 2:W% = 11:T% = 2:B% = 10: GOSUB 150: HOME : PRINT NAME$ 4810 GOSUB 310: GOSUB 300: GOSUB 140: GOSUB 110: GOSUB 310: GOSUB 300: FOR I = 1 TO 5: GOSUB 140: GOSUB 110: NEXT I 4880 L% = 2:W% = 11:T% = 2:B% = 10: GOSUB 150: HOME : INVERSE : PRINT NAME$ 4900 V$ = "95 138 20 ": GOSUB 180:V$ = "20 108 138": GOSUB 170:V$ = "138 149 108": GOSUB 180 4920 HPLOT 145,105 TO 148,108: HPLOT 145,111 TO 148,108 4940 S$ = "1424MY.NAME": GOSUB 40 4960 GOSUB 310 4980 GOSUB 251:L% = 2:W% = 11:T% = 2:B% = 10: GOSUB 150: HOME : PRINT NAME$ 4990 GOSUB 300: GOSUB 140: GOSUB 110: GOSUB 140: GOSUB 110 5005 PRINT D$"BLOAD P.CHELS3,A$4000": GOSUB 120:S$ = "1424MY.NAME": GOSUB 251 5007 S$(0) = "1723OPERATING SYSTEM":S$(1) = "1403 OPERATING ":S$(2) = "1503 SYSTEM ":S$(3) = "1623 PROGRAM ":S$(4) = "1203 PROGRAM " 5010 S$ = S$(0): GOSUB 251:S$ = S$(3): GOSUB 251 5015 GOSUB 310: GOSUB 300 5025 S$ = S$(0): GOSUB 40 5030 FOR I = 0 TO 4 5035 HCOLOR= 0: IF I/2 = INT(I/2) THEN HCOLOR= 3 5040 V$ = "149 122 132": GOSUB 180:V$ = "132 108 122": GOSUB 170:V$ = "122 95 108": GOSUB 180 5045 IF I = 0 THEN S$ = S$(1): GOSUB 250 5050 IF I = 2 THEN S$ = S$(2): GOSUB 250 5055 NEXT I 5060 HPLOT 99,111 TO 96,108: HPLOT 99,105 TO 96,108 5065 HPLOT 10,100 TO 94,100 5070 S$ = S$(3): GOSUB 40 5075 FOR I = 0 TO 2 5080 HCOLOR= 0: IF I/2 = INT(I/2) THEN HCOLOR= 3 5085 V$ = "149 130 124": GOSUB 180:V$ = "124 92 130": GOSUB 170:V$ = "130 95 92 ": GOSUB 180 5090 IF I = 0 THEN S$ = S$(4): GOSUB 250 5095 NEXT I 5100 HPLOT 99,95 TO 96,92: HPLOT 99,89 TO 96,92 5105 HPLOT 10,84 TO 94,84 5110 GOSUB 140: GOSUB 110 5115 FOR I = 0 TO 4:S$ = S$(I): GOSUB 251: NEXT I 5120 ZZ% = FRE(0) 5200 GOSUB 310: GOSUB 300: GOSUB 140: GOSUB 110 5212 S$ = "1424MY.NAME": GOSUB 40 5220 V$ = "149 138 108": GOSUB 180:V$ = "108 20 138": GOSUB 170:V$ = "138 95 20 ": GOSUB 180: HPLOT 99,17 TO 96,20: HPLOT 99,23 TO 96,20 5224 INVERSE :L% = 2:W% = 11:T% = 2:B% = 10: GOSUB 150: HOME : PRINT NAME$;: NORMAL 5228 GOSUB 152: GOSUB 110:L% = 2:W% = 11:T% = 2:B% = 10: GOSUB 150: HOME : PRINT NAME$;: GOSUB 152: GOSUB 251 5232 HCOLOR= 0:V$ = "149 138 108": GOSUB 180:V$ = "108 20 138": GOSUB 170:V$ = "138 95 20 ": GOSUB 180: HPLOT 99,17 TO 96,20: HPLOT 99,23 TO 96,20: HCOLOR= 3 5236 GOSUB 140: GOSUB 110 5240 GOSUB 155: GOSUB 130: GOSUB 140:NC% = 0 5244 L% = 18:W% = 19:T% = 7:B% = 16: GOSUB 200: HPLOT 125,67 TO 260,67 5248 INVERSE : PRINT " Type the new name:":T% = T% +2: GOSUB 150 5250 AN$ = "": NORMAL 5252 HOME : GOSUB 50: IF ESCKEY THEN PRINT D$"CLOSE": GOTO 9990 5256 IF LEN(AN$) >1 THEN NAME$ = AN$: GOTO 5276 5260 IF NC% <2 THEN AN$ = "": PRINT : PRINT : PRINT "Please type the new name and press": PRINT "RETURN.":NC% = NC% +1: GOTO 5252 5264 PRINT CHR$(12): HOME : PRINT : PRINT : PRINT 5268 PRINT "I'll type a name": PRINT "for you.":NAME$ = " Lance Guy Saleme ": GOSUB 20 5272 PRINT CHR$(12);: HOME : FOR I = 1 TO LEN(NAME$): PRINT MID$ (NAME$,I,1);:Z = PEEK( -16336) + PEEK( -16336): FOR Z = 1 TO 50: NEXT Z,I 5276 V$ = "121 110 75 ": GOSUB 180:V$ = "75 20 110": GOSUB 170:V$ = "110 95 20 ": GOSUB 180 5280 HPLOT 99,17 TO 96,20: HPLOT 99,23 TO 96,20 5284 IF LEN(NAME$) >78 THEN NAME$ = LEFT$(NAME$,78) 5288 L% = 2:W% = 11:T% = 2:B% = 10: GOSUB 150: PRINT CHR$(12): HOME : PRINT NAME$; 5292 GOSUB 310 5296 GOSUB 120:L% = 2:W% = 11:T% = 2:B% = 10: GOSUB 150: PRINT CHR$(12): HOME : PRINT NAME$; 5300 GOSUB 152: VTAB 1: PRINT 5304 NORMAL 5308 GOSUB 300 5312 ZZ% = FRE(0) 5500 GOSUB 310: POKE FT,F2: CALL MOVE: GOSUB 130 5520 V$ = "95 138 20 ": GOSUB 180:V$ = "20 108 138": GOSUB 170:V$ = "138 149 108": GOSUB 180: HPLOT 145,105 TO 148,108: HPLOT 145,111 TO 148,108 5540 S$ = "1424MY.NAME": GOSUB 40: GOSUB 110 5560 GOSUB 120: GOSUB 300: GOSUB 140: GOSUB 110 5580 V$ = "95 138 20 ": GOSUB 180:V$ = "20 116 138": GOSUB 170:V$ = "138 149 116": GOSUB 180: HPLOT 145,113 TO 148,116: HPLOT 145,119 TO 148,116 5600 S$ = "1524MY.NAME2": GOSUB 40: GOSUB 110 5620 GOSUB 251:L% = 2:W% = 11:T% = 2:B% = 10: GOSUB 150: HOME : PRINT NAME$; 5630 ZZ% = FRE(0) 5640 GOSUB 140: GOSUB 110 5710 GOSUB 152: PRINT CHR$(12): HOME :ZC = 0 5720 GOSUB 45: POKE FT,F1: CALL MOVE: GOSUB 45: POKE FT,F2: CALL MOVE: FOR I = 1 TO 3: GOSUB 45: NEXT I 5730 POKE FT,F1: CALL MOVE: GOSUB 45: POKE FT,F2: CALL MOVE: GOSUB 45: POKE FT,F1: CALL MOVE: GOSUB 45: GOSUB 45 5740 POKE FT,F2: CALL MOVE: GOSUB 45 5900 GOSUB 140: POKE 794,1:ZZ% = FRE(0): GOSUB 110 9980 GOSUB 152: HOME : PRINT D$"CLOSE": TEXT : VTAB 12:S$ = "Just a moment please...": GOSUB 100: PRINT : PRINT D$"-TRIVIA.GAME": END 9990 GOSUB 152: HOME : TEXT : VTAB 12:S$ = "Just a moment please....": GOSUB 100: PRINT : PRINT CHR$(4)"-MENU" 10000 ERR% = PEEK(222):LINE% = PEEK(218) + PEEK(219) *256 10005 IF ERR% = 255 THEN RESUME 10010 GOSUB 152: HOME : PRINT CL$: TEXT : HOME : PRINT D$"CLOSE": VTAB 5: PRINT "An ERROR has occurred in this program.": PRINT 10100 IF ERR% < >6 THEN 10200 10105 IF LINE% < >9980 THEN 10210 10110 PRINT "The next program to be executed was not": PRINT "found on the diskette in the drive.": GOTO 10220 10200 IF ERR% < >8 THEN 10900 10210 PRINT "There appears to be a problem with the": PRINT "diskette in the disk drive." 10220 PRINT : PRINT "Make sure you have the correct diskette": PRINT "(Your Tour of the Apple II) in the disk": PRINT "drive.": GOTO 11000 10900 PRINT "The error does not seem to be one that": PRINT "this program knows about. Please note": PRINT "the error number and line number listed": PRINT "below and report it to your dealer." 10910 PRINT : PRINT "Error Number = "ERR%: PRINT "Line Number = "LINE% 10920 PRINT : PRINT "Please put another program diskette in": PRINT "the disk drive. When you have done": PRINT "this press RETURN to continue." 10930 GOSUB 110: PRINT : PRINT D$"PR#5" 11000 PRINT : PRINT "Press RETURN to continue." 11010 IF PEEK(KS%) < >141 THEN 11010 11020 POKE (KC%),0:EC% = EC% +1: IF EC% >2 THEN 11900 11030 IF LINE% = 9990 THEN 9990 11040 IF LINE% = 9980 THEN 9980 11050 IF ERR% = 8 OR ERR% = 6 THEN RUN 11900 HOME : GOTO 10900 32998 REM <CTRL-0x0a><CTRL-0x0a>* BY: LANCE G. SALEME 32999 REM * COPYRIGHT 1984, 1986, 1988 APPLE COMPUTER, INC. *